home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / gnustuff / tos / updates / update37.zoo / lib / diffc
Encoding:
Text File  |  1994-02-02  |  35.3 KB  |  1,267 lines

  1. ===================================================================
  2. RCS file: /net/acae127/home/bammi/etc/src/master/atari/lib/Changelo,v
  3. retrieving revision 1.104
  4. diff -c -r1.104 Changelo
  5. *** 1.104    1993/11/29 20:44:29
  6. --- Changelo    1994/02/02 17:03:53
  7. ***************
  8. *** 4447,4449 ****
  9. --- 4447,4641 ----
  10.       around the `jra do_set'.
  11.   
  12.   ---------------------------- Patchlevel 96 ---------------------------
  13. + ==sync with mntlib42
  14. + ***** abs.c
  15. + ----------------------------
  16. + revision 41.2    
  17. + date: 1993/11/24 20:23:16;  author: pvt1-117;  state: Exp;  lines: +7 -0
  18. + Inline abs() and labs() for LCC.
  19. + =============================================================================
  20. + ***** bblink.c
  21. + ----------------------------
  22. + revision 41.3    
  23. + date: 1994/01/13 08:03:50;  author: schwab;  state: Exp;  lines: +29 -26
  24. + Fixed version of update for GCC 2.5
  25. + ----------------------------
  26. + revision 41.2
  27. + date: 1993/11/30 18:51:36;  author: schwab;  state: Exp;  lines: +139 -2
  28. + Updated for GCC 2.5
  29. + =============================================================================
  30. + ***** buffindf.c
  31. + ----------------------------
  32. + revision 41.2    
  33. + date: 1994/01/09 09:33:20;  author: schwab;  state: Exp;
  34. + NEW file.
  35. + The library uses the names findfile and buffindfile which are in the
  36. + user's namespace. findfile is not really used and should be move into
  37. + a separate file, and buffindfile should be renamed to _buffindfile.
  38. + I have renamed findfile.c to buffindf.c and moved the function
  39. + findfile into a new findfile.c, and changed all callers.
  40. + =============================================================================
  41. + ***** fdopen.c
  42. + ----------------------------
  43. + revision 41.3    
  44. + date: 1994/01/13 09:37:36;  author: entropy;  state: Exp;  lines: +2 -0
  45. + *** empty log message ***
  46. + ----------------------------
  47. + revision 41.2
  48. + date: 1993/11/24 20:12:04;  author: nox;  state: Exp;  lines: +1 -1
  49. + Use binary mode on tty's (under MiNT) to avoid extra ^M's.
  50. + =============================================================================
  51. + ***** findfile.c
  52. + ----------------------------
  53. + revision 41.2    
  54. + date: 1994/01/09 09:29:32;  author: schwab;  state: Exp;  lines: +2 -126
  55. + The library uses the names findfile and buffindfile which are in the
  56. + user's namespace. findfile is not really used and should be moved into
  57. + a separate file, and buffindfile should be renamed to _buffindfile.
  58. + I have renamed findfile.c to buffindf.c and moved the function
  59. + findfile into the new findfile.c, and changed all callers.
  60. + =============================================================================
  61. + ***** fopen.c
  62. + ----------------------------
  63. + revision 41.4    
  64. + date: 1994/01/09 11:12:06;  author: nox;  state: Exp;  lines: +2 -2
  65. + *** empty log message ***
  66. + ----------------------------
  67. + revision 41.3
  68. + date: 1994/01/09 11:06:16;  author: nox;  state: Exp;  lines: +2 -0
  69. + In _fopen() we seek to the end when file mode "a" is used (the kernel
  70. + won't do this until the first write.)
  71. + ----------------------------
  72. + revision 41.2
  73. + date: 1993/11/24 20:12:34;  author: nox;  state: Exp;  lines: +1 -1
  74. + Use binary mode on tty's (under MiNT) to avoid extra ^M's.
  75. + =============================================================================
  76. + ***** getpw.c
  77. + ----------------------------
  78. + revision 41.2    
  79. + date: 1993/11/30 20:40:50;  author: nox;  state: Exp;  lines: +4 -2
  80. + Convert backslashes in the home directory in the passwd file, for backwards
  81. + compatibility.
  82. + =============================================================================
  83. + ***** lib.h
  84. + ----------------------------
  85. + revision 41.2    
  86. + date: 1993/11/30 18:51:48;  author: schwab;  state: Exp;  lines: +1 -1
  87. + Use new way to declare a function that doesn't return, since
  88. + the old way wasn't ANSI conforming.
  89. + =============================================================================
  90. + ***** libgcc2.c
  91. + ----------------------------
  92. + revision 41.2    
  93. + date: 1993/11/30 18:51:58;  author: schwab;  state: Exp;  lines: +35 -62
  94. + New entry points: L_builtin_new, L_caps_New and L_builtin_del are replaced
  95. + by L_op_new, L_new_handler and L_op_delete.
  96. + =============================================================================
  97. + ***** longlong.h
  98. + ----------------------------
  99. + revision 41.2    
  100. + date: 1993/11/30 18:52:22;  author: schwab;  state: Exp;  lines: +25 -24
  101. + Updated for GCC 2.5
  102. + =============================================================================
  103. + ***** include/assert.h
  104. + ----------------------------
  105. + revision 41.3    
  106. + date: 1994/01/09 09:02:56;  author: lux;  state: Exp;  lines: +4 -13
  107. + Make assert() macro more ANSI compliant by replacing the broken assert()
  108. + macro with what was previously given as assertval(), and remove
  109. + the assertval() macro.
  110. + ----------------------------
  111. + revision 41.2
  112. + date: 1993/11/30 18:50:46;  author: schwab;  state: Exp;  lines: +1 -1
  113. + Use new way to declare a function that doesn't return, since
  114. + the old way wasn't ANSI conforming.
  115. + =============================================================================
  116. + ***** include/compiler.h
  117. + ----------------------------
  118. + revision 41.2    
  119. + date: 1993/11/30 18:50:50;  author: schwab;  state: Exp;  lines: +10 -0
  120. + Use new way to declare a function that doesn't return, since
  121. + the old way wasn't ANSI conforming.
  122. + =============================================================================
  123. + ***** include/ioctl.h
  124. + ----------------------------
  125. + revision 41.2    
  126. + date: 1993/11/24 21:09:20;  author: schwab;  state: Exp;  lines: +1 -0
  127. + Add definition of B134.
  128. + =============================================================================
  129. + ***** include/math-68881.h
  130. + ----------------------------
  131. + revision 41.2    
  132. + date: 1993/11/30 18:50:58;  author: schwab;  state: Exp;  lines: +112 -48
  133. + Give inline functions const attribute instead of declaring as const.
  134. + Fix a bug in atan2 where the function from libpml gives a different result
  135. + on the arguments (0, -1).
  136. + =============================================================================
  137. + ***** include/minimal.h
  138. + ----------------------------
  139. + revision 41.2    
  140. + date: 1993/11/30 18:51:10;  author: schwab;  state: Exp;  lines: +4 -3
  141. + Use new way to declare a function that doesn't return, since
  142. + the old way wasn't ANSI conforming.
  143. + =============================================================================
  144. + ***** include/mintbind.h
  145. + ----------------------------
  146. + revision 41.3    
  147. + date: 1994/01/09 10:01:00;  author: pvt1-117;  state: Exp;  lines: +1 -1
  148. + Some changes for Lattice C.
  149. + ----------------------------
  150. + revision 41.2
  151. + date: 1993/11/24 20:50:10;  author: hohmuth;  state: Exp;  lines: +1 -1
  152. + Fix return type of Pwaitpid() for Pure C.
  153. + =============================================================================
  154. + ***** include/osbind.h
  155. + ----------------------------
  156. + revision 41.2    
  157. + date: 1994/01/09 10:01:28;  author: pvt1-117;  state: Exp;  lines: +3 -3
  158. + Some changes for Lattice C.
  159. + =============================================================================
  160. + ***** include/stdlib.h
  161. + ----------------------------
  162. + revision 41.3    
  163. + date: 1993/11/30 18:51:16;  author: schwab;  state: Exp;  lines: +3 -3
  164. + Use new way to declare a function that doesn't return, since
  165. + the old way wasn't ANSI conforming.
  166. + ----------------------------
  167. + revision 41.2
  168. + date: 1993/11/24 20:20:46;  author: pvt1-117;  state: Exp;  lines: +10 -0
  169. + Inline abs() and labs() for LCC.
  170. + =============================================================================
  171. + ***** include/support.h
  172. + ----------------------------
  173. + revision 41.3    
  174. + date: 1994/01/09 09:28:44;  author: schwab;  state: Exp;  lines: +1 -1
  175. + Rename buffindfile() to _buffindfile().
  176. + ----------------------------
  177. + revision 41.2
  178. + date: 1993/11/30 18:51:22;  author: schwab;  state: Exp;  lines: +2 -2
  179. + Use new way to declare a function that doesn't return, since
  180. + the old way wasn't ANSI conforming.
  181. + =============================================================================
  182. + ***** include/termios.h
  183. + ----------------------------
  184. + revision 41.2    
  185. + date: 1993/11/24 21:10:38;  author: schwab;  state: Exp;  lines: +1 -0
  186. + Add definition of B134.
  187. + =============================================================================
  188. + ***** include/unistd.h
  189. + ----------------------------
  190. + revision 41.2    
  191. + date: 1993/11/30 18:51:28;  author: schwab;  state: Exp;  lines: +1 -1
  192. + Use new way to declare a function that doesn't return, since
  193. + the old way wasn't ANSI conforming.
  194. + =============================================================================
  195. + ==end sync
  196. + mincl: ++jrb
  197. +     adjust for above
  198. +     -- add target for buffindf.o
  199. +     -- adjust names for op_new etc
  200. + ---------------------------- Patchlevel 97 ---------------------------
  201. ===================================================================
  202. RCS file: /net/acae127/home/bammi/etc/src/master/atari/lib/PatchLev.h,v
  203. retrieving revision 1.72
  204. diff -c -r1.72 PatchLev.h
  205. *** 1.72    1993/11/29 20:44:35
  206. --- PatchLev.h    1994/02/02 17:04:12
  207. ***************
  208. *** 1,5 ****
  209.   
  210. ! #define    PatchLevel "96"
  211.   
  212.   /*
  213.    *
  214. --- 1,5 ----
  215.   
  216. ! #define    PatchLevel "97"
  217.   
  218.   /*
  219.    *
  220. ===================================================================
  221. RCS file: /net/acae127/home/bammi/etc/src/master/atari/lib/mincl,v
  222. retrieving revision 1.34
  223. diff -c -r1.34 mincl
  224. *** 1.34    1993/11/17 17:10:09
  225. --- mincl    1994/01/20 16:54:00
  226. ***************
  227. *** 11,18 ****
  228.   GLIB2 = _muldi3.o _divdi3.o _moddi3.o _udivdi3.o _umoddi3.o _negdi2.o \
  229.       _lshrdi3.o _lshldi3.o _ashldi3.o _ashrdi3.o _udivmoddi4.o _cmpdi2.o \
  230.       _ucmpdi2.o _floatdidf.o _floatdisf.o _fixunsdfsi.o _fixunssfsi.o \
  231. !     _fixunsdfdi.o _fixdfdi.o _fixunssfdi.o _fixsfdi.o _builtin_new.o \
  232. !     _caps_New.o _builtin_del.o _trampoline.o __main.o _ctor_list.o \
  233.       _dtor_list.o _ffsdi2.o
  234.   
  235.   GCC=     $(GLIB1) $(GLIB2) $(FCOMPD) $(FCOMPS)\
  236. --- 11,18 ----
  237.   GLIB2 = _muldi3.o _divdi3.o _moddi3.o _udivdi3.o _umoddi3.o _negdi2.o \
  238.       _lshrdi3.o _lshldi3.o _ashldi3.o _ashrdi3.o _udivmoddi4.o _cmpdi2.o \
  239.       _ucmpdi2.o _floatdidf.o _floatdisf.o _fixunsdfsi.o _fixunssfsi.o \
  240. !     _fixunsdfdi.o _fixdfdi.o _fixunssfdi.o _fixsfdi.o _op_new.o \
  241. !     _new_handler.o _op_delete.o _trampoline.o __main.o _ctor_list.o \
  242.       _dtor_list.o _ffsdi2.o
  243.   
  244.   GCC=     $(GLIB1) $(GLIB2) $(FCOMPD) $(FCOMPS)\
  245. ***************
  246. *** 38,47 ****
  247.   
  248.   #
  249.   # other portable stuff
  250. ! PORT =  a64l.o alphasor.o abs.o catch.o dirent.o findfile.o ftw.o getpw.o \
  251. !     getlogin.o getopt.o getpass.o ident.o mktemp.o putpwent.o scandir.o strlwr.o \
  252. !     strrev.o strupr.o regexp.o regsup.o textio.o random.o obstack.o \
  253. !     il.o ic.o iw.o ig.o ip.o frwbin.o ctermid.o cuserid.o ffs.o nlist.o
  254.   #
  255.   # the string library
  256.   
  257. --- 38,48 ----
  258.   
  259.   #
  260.   # other portable stuff
  261. ! PORT =  a64l.o alphasor.o abs.o buffindf.o catch.o dirent.o findfile.o ftw.o \
  262. !     getpw.o getlogin.o getopt.o getpass.o ident.o mktemp.o putpwent.o \
  263. !         scandir.o strlwr.o strrev.o strupr.o regexp.o regsup.o textio.o \
  264. !         random.o obstack.o il.o ic.o iw.o ig.o ip.o frwbin.o ctermid.o \
  265. !     cuserid.o ffs.o nlist.o
  266.   #
  267.   # the string library
  268.   
  269. ===================================================================
  270. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/abs.c,v
  271. retrieving revision 1.2
  272. diff -c -r1.2 abs.c
  273. *** 1.2    1989/03/23 18:24:23
  274. --- abs.c    1994/01/20 16:33:08
  275. ***************
  276. *** 1,6 ****
  277. --- 1,13 ----
  278.   /* return absolute values */
  279.   #include <stdlib.h>
  280.   
  281. + #ifdef abs
  282. + #undef abs
  283. + #endif
  284. + #ifdef labs
  285. + #undef labs
  286. + #endif
  287.   int abs(x)
  288.   int x;
  289.   { return x < 0 ? -x : x; }
  290. ===================================================================
  291. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/bblink.c,v
  292. retrieving revision 1.1
  293. diff -c -r1.1 bblink.c
  294. *** 1.1    1992/04/19 16:02:45
  295. --- bblink.c    1994/01/20 16:33:09
  296. ***************
  297. *** 5,38 ****
  298.   #include <compiler.h>
  299.   #include <stdio.h>
  300.   #include <stdlib.h>
  301.   
  302. ! /* block count struct produced by gcc -tcov */
  303. ! typedef struct _bb_count {
  304.       long    initialized;    /* has __bb_init_func been called */
  305. !     char    *filename;    /* filename for .d file          */
  306. !     long    *block_counts;  /* address of block count table   */
  307. !     long    ncount;        /* sizeof block count table       */
  308.                       /* ie: # of basic blocks in file  */
  309. !     struct _bb_count *next;    /* in memory link to next struct  */
  310. !     char    ***addr_table;  /* addr of basic block address table */
  311. !                 /* size of addr_table == ncount+1    */
  312. ! } BB_COUNT;
  313.   
  314. ! void __bb_init_func __PROTO((BB_COUNT *));
  315.   static void exit_func __PROTO((void));      /* installed to be called at exit */
  316. ! static void save_info __PROTO((BB_COUNT *));
  317.   
  318.   /* vars */
  319. ! static BB_COUNT *hdr = NULL;    /* list of all bb_count for which 
  320.                          __bb_init_func has been called */
  321.   static char first_call = 1;    /* flags first call to __bb_init_func */
  322.   static char at_exit_failed = 0; /* flag to indicate that atexit() failed */
  323.   
  324.   /*
  325. !  * called by gcc -tcov generated code on first entry into a function
  326.    */
  327.   void __bb_init_func(bb_count)
  328. ! BB_COUNT *bb_count;
  329.   {
  330.       if(at_exit_failed)
  331.       return;
  332. --- 5,48 ----
  333.   #include <compiler.h>
  334.   #include <stdio.h>
  335.   #include <stdlib.h>
  336. + #include <time.h>
  337. + #include <string.h>
  338.   
  339. ! /* block count struct produced by gcc -a */
  340. ! struct bb {
  341.       long    initialized;    /* has __bb_init_func been called */
  342. !     const char    *filename;    /* filename for .d file          */
  343. !     long    *counts;    /* address of block count table   */
  344. !     long    ncounts;    /* sizeof block count table       */
  345.                       /* ie: # of basic blocks in file  */
  346. !     struct bb *next;        /* in memory link to next struct  */
  347. !     const unsigned long    *addresses; /* addr of basic block address table */
  348. !                 /* size of address table == ncounts+1 */
  349. !     /* Older GCC's did not emit these fields.  */
  350. !     long nwords;
  351. !     const char **functions;
  352. !     const long *line_nums;
  353. !     const char **filenames;
  354. ! };
  355.   
  356. ! void __bb_init_func __PROTO((struct bb *));
  357.   static void exit_func __PROTO((void));      /* installed to be called at exit */
  358. ! #ifdef OLD
  359. ! static void save_info __PROTO((struct bb *));
  360. ! #endif
  361.   
  362.   /* vars */
  363. ! static struct bb *bb_head = NULL; /* list of all bb_count for which 
  364.                          __bb_init_func has been called */
  365.   static char first_call = 1;    /* flags first call to __bb_init_func */
  366.   static char at_exit_failed = 0; /* flag to indicate that atexit() failed */
  367.   
  368.   /*
  369. !  * called by gcc -a generated code on first entry into a function
  370.    */
  371.   void __bb_init_func(bb_count)
  372. ! struct bb *bb_count;
  373.   {
  374.       if(at_exit_failed)
  375.       return;
  376. ***************
  377. *** 51,71 ****
  378.   
  379.       if(bb_count->initialized == 0)
  380.       {   /* link into list of bb_counts */
  381. !     bb_count->next = hdr;
  382. !     hdr = bb_count;
  383.       bb_count->initialized = 1;
  384.       }
  385.   }
  386.   
  387.   /*
  388.    * called on normal exit
  389.    *   write out block profile files for each bb_count struct in list.
  390.    */
  391.   static void exit_func()
  392.   {
  393. !     BB_COUNT *p;
  394.   
  395. !     for(p = hdr; p; p = p->next)
  396.          save_info(p);
  397.   }
  398.   
  399. --- 61,82 ----
  400.   
  401.       if(bb_count->initialized == 0)
  402.       {   /* link into list of bb_counts */
  403. !     bb_count->next = bb_head;
  404. !     bb_head = bb_count;
  405.       bb_count->initialized = 1;
  406.       }
  407.   }
  408.   
  409. + #ifdef OLD
  410.   /*
  411.    * called on normal exit
  412.    *   write out block profile files for each bb_count struct in list.
  413.    */
  414.   static void exit_func()
  415.   {
  416. !     struct bb *p;
  417.   
  418. !     for(p = bb_head; p; p = p->next)
  419.          save_info(p);
  420.   }
  421.   
  422. ***************
  423. *** 78,88 ****
  424.    * given a bb_count struct, save info into .d file
  425.    */
  426.   static void save_info(p)
  427. ! BB_COUNT *p;
  428.   {
  429.       FILE *fp;
  430.       long i, *bcounts;
  431. !     DINFO *dinfo = malloc(p->ncount * sizeof(DINFO));
  432.   
  433.       if(!dinfo)
  434.       {
  435. --- 89,99 ----
  436.    * given a bb_count struct, save info into .d file
  437.    */
  438.   static void save_info(p)
  439. ! struct bb *p;
  440.   {
  441.       FILE *fp;
  442.       long i, *bcounts;
  443. !     DINFO *dinfo = malloc(p->ncounts * sizeof(DINFO));
  444.   
  445.       if(!dinfo)
  446.       {
  447. ***************
  448. *** 97,118 ****
  449.       return;
  450.       }
  451.       /* read .d file & accumulate counts */
  452. !     for(i = 0, bcounts = p->block_counts;
  453.           fscanf(fp, "%ld%ld", &dinfo[i].lineno, &dinfo[i].count) == 2; i++)
  454.       {
  455. !     if(i >= p->ncount)
  456.           {
  457.             fprintf(stderr, "Block counts in %s exceed expected %ld, rest skipped\n",
  458. !             p->filename, p->ncount);
  459.             break;
  460.           }
  461.       dinfo[i].count += bcounts[i];
  462.       }
  463.       fclose(fp);
  464. !     if(i < p->ncount)
  465.       {
  466.         fprintf(stderr, "Warning Block counts in %s less than expected %ld\n",
  467. !             p->filename, p->ncount);
  468.       }
  469.       if((fp = fopen(p->filename, "w")) == NULL)
  470.       {
  471. --- 108,129 ----
  472.       return;
  473.       }
  474.       /* read .d file & accumulate counts */
  475. !     for(i = 0, bcounts = p->counts;
  476.           fscanf(fp, "%ld%ld", &dinfo[i].lineno, &dinfo[i].count) == 2; i++)
  477.       {
  478. !     if(i >= p->ncounts)
  479.           {
  480.             fprintf(stderr, "Block counts in %s exceed expected %ld, rest skipped\n",
  481. !             p->filename, p->ncounts);
  482.             break;
  483.           }
  484.       dinfo[i].count += bcounts[i];
  485.       }
  486.       fclose(fp);
  487. !     if(i < p->ncounts)
  488.       {
  489.         fprintf(stderr, "Warning Block counts in %s less than expected %ld\n",
  490. !             p->filename, p->ncounts);
  491.       }
  492.       if((fp = fopen(p->filename, "w")) == NULL)
  493.       {
  494. ***************
  495. *** 120,126 ****
  496.       free(dinfo);
  497.       return;
  498.       }
  499. !     for(i = 0; i < p->ncount; i++)
  500.       {
  501.       if(fprintf(fp, "\t%ld\t%ld\n", dinfo[i].lineno, dinfo[i].count) == EOF)
  502.       {
  503. --- 131,137 ----
  504.       free(dinfo);
  505.       return;
  506.       }
  507. !     for(i = 0; i < p->ncounts; i++)
  508.       {
  509.       if(fprintf(fp, "\t%ld\t%ld\n", dinfo[i].lineno, dinfo[i].count) == EOF)
  510.       {
  511. ***************
  512. *** 133,135 ****
  513. --- 144,275 ----
  514.       fclose(fp);
  515.       free(dinfo);
  516.   }
  517. + #else /* !OLD */
  518. + /* from GCC's libgcc2.c */
  519. + /* Return the number of digits needed to print a value */
  520. + /* __inline__ */ static int num_digits (long value, int base)
  521. + {
  522. +   int minus = (value < 0 && base != 16);
  523. +   unsigned long v = (minus) ? -value : value;
  524. +   int ret = minus;
  525. +   do
  526. +     {
  527. +       v /= base;
  528. +       ret++;
  529. +     }
  530. +   while (v);
  531. +   return ret;
  532. + }
  533. + static void
  534. + exit_func (void)
  535. + {
  536. +   FILE *file = fopen ("bb.out", "a");
  537. +   time_t time_value;
  538. +   if (!file)
  539. +     perror ("bb.out");
  540. +   else
  541. +     {
  542. +       struct bb *ptr;
  543. +       time (&time_value);
  544. +       fprintf (file, "Basic block profiling finished on %s\n", ctime (&time_value));
  545. +       /* We check the length field explicitly in order to allow compatibility
  546. +      with older GCC's which did not provide it.  */
  547. +       for (ptr = bb_head; ptr != (struct bb *) NULL; ptr = ptr->next)
  548. +     {
  549. +       int i;
  550. +       int func_p    = (ptr->nwords >= sizeof (struct bb) && ptr->nwords <= 1000);
  551. +       int line_p    = (func_p && ptr->line_nums);
  552. +       int file_p    = (func_p && ptr->filenames);
  553. +       long ncounts    = ptr->ncounts;
  554. +       long cnt_max  = 0;
  555. +       long line_max = 0;
  556. +       long addr_max = 0;
  557. +       int file_len    = 0;
  558. +       int func_len    = 0;
  559. +       int blk_len    = num_digits (ncounts, 10);
  560. +       int cnt_len;
  561. +       int line_len;
  562. +       int addr_len;
  563. +       fprintf (file, "File %s, %ld basic blocks \n\n",
  564. +            ptr->filename, ncounts);
  565. +       /* Get max values for each field.  */
  566. +       for (i = 0; i < ncounts; i++)
  567. +         {
  568. +           const char *p;
  569. +           int len;
  570. +           if (cnt_max < ptr->counts[i])
  571. +         cnt_max = ptr->counts[i];
  572. +           if (addr_max < ptr->addresses[i])
  573. +         addr_max = ptr->addresses[i];
  574. +           if (line_p && line_max < ptr->line_nums[i])
  575. +         line_max = ptr->line_nums[i];
  576. +           if (func_p)
  577. +         {
  578. +           p = (ptr->functions[i]) ? (ptr->functions[i]) : "<none>";
  579. +           len = strlen (p);
  580. +           if (func_len < len)
  581. +             func_len = len;
  582. +         }
  583. +           if (file_p)
  584. +         {
  585. +           p = (ptr->filenames[i]) ? (ptr->filenames[i]) : "<none>";
  586. +           len = strlen (p);
  587. +           if (file_len < len)
  588. +             file_len = len;
  589. +         }
  590. +         }
  591. +       addr_len = num_digits (addr_max, 16);
  592. +       cnt_len  = num_digits (cnt_max, 10);
  593. +       line_len = num_digits (line_max, 10);
  594. +       /* Now print out the basic block information.  */
  595. +       for (i = 0; i < ncounts; i++)
  596. +         {
  597. +           fprintf (file,
  598. +                "    Block #%*d: executed %*ld time(s) address= 0x%.*lx",
  599. +                blk_len, i+1,
  600. +                cnt_len, ptr->counts[i],
  601. +                addr_len, ptr->addresses[i]);
  602. +           if (func_p)
  603. +         fprintf (file, " function= %-*s", func_len,
  604. +              (ptr->functions[i]) ? ptr->functions[i] : "<none>");
  605. +           if (line_p)
  606. +         fprintf (file, " line= %*ld", line_len, ptr->line_nums[i]);
  607. +           if (file_p)
  608. +         fprintf (file, " file= %s",
  609. +              (ptr->filenames[i]) ? ptr->filenames[i] : "<none>");
  610. +           fprintf (file, "\n");
  611. +         }
  612. +       fprintf (file, "\n");
  613. +       fflush (file);
  614. +     }
  615. +       fprintf (file, "\n\n");
  616. +       fclose (file);
  617. +     }
  618. + }
  619. + #endif /* OLD */
  620. ===================================================================
  621. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/fdopen.c,v
  622. retrieving revision 1.13
  623. diff -c -r1.13 fdopen.c
  624. *** 1.13    1993/10/26 23:52:27
  625. --- fdopen.c    1994/01/20 16:33:09
  626. ***************
  627. *** 5,10 ****
  628. --- 5,12 ----
  629.   #include <unistd.h>
  630.   #include <errno.h>
  631.   
  632. + extern int __mint;
  633.   FILE *fdopen(h, mode)
  634.       register int h;
  635.       register const char *mode;
  636. ***************
  637. *** 59,65 ****
  638.           iomode |= O_RDWR;
  639.   
  640.       if(isatty(h))
  641. !         f |= (_IODEV | _IONBF);
  642.       else
  643.           f |= _IOFBF;
  644.       fp->_file = h;            /* file handle */
  645. --- 61,67 ----
  646.           iomode |= O_RDWR;
  647.   
  648.       if(isatty(h))
  649. !         f |= __mint ? (_IODEV | _IONBF | _IOBIN) : (_IODEV | _IONBF);
  650.       else
  651.           f |= _IOFBF;
  652.       fp->_file = h;            /* file handle */
  653. ===================================================================
  654. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/findfile.c,v
  655. retrieving revision 1.14
  656. diff -c -r1.14 findfile.c
  657. *** 1.14    1993/10/26 23:52:30
  658. --- findfile.c    1994/01/20 16:33:10
  659. ***************
  660. *** 1,137 ****
  661. - /* findfile: given a base filename, a list of directories, and a list
  662. -    of possible extensions to the filename, attempts to find a file.
  663. -    Useful for doing, e.g. spawnvp. Note that the current directory
  664. -    is always searched first! If the filename already contains a
  665. -    path specification (or extension) then the given path list
  666. -    (or extension list) is ignored.
  667. -    Returns the name by which the file was found, or NULL.
  668. -    Written by Eric R. Smith and placed in the public domain.
  669. -    rehacked by Uwe Ohse, 28.4.93, to support reentrant spawn/popen.
  670. - */
  671.   #include <compiler.h>
  672.   #include <limits.h>    /* needed for PATH_MAX */
  673.   #include <support.h>
  674. - #include <stddef.h>
  675. - #include <types.h>
  676. - #include <stat.h>
  677. - #include <string.h>
  678. - /* characters used to separate components in a path list */
  679. - #define PATHSEP1        ':'
  680. - #define PATHSEP2        ','
  681. - /* characters used to separate directory names in a file */
  682. - #define DIRSEP1         '\\'    /* native OS directory separator */
  683. - #define DIRSEP2         '/'     /* for emulating another OS */
  684. - static char *const nullext[] = { NULL };
  685. - static int EXISTS __PROTO((const char *));
  686.   
  687. - static int
  688. - EXISTS(name)
  689. -     const char *name;
  690. - {
  691. -     struct stat dummy;
  692. -     if (stat(name, &dummy) != 0)
  693. -         return 0;
  694. -     if ( (dummy.st_mode & S_IFMT) != S_IFREG )
  695. -         return 0;
  696. -     return 1;
  697. - }
  698.   char *
  699.   findfile(fname, fpath, fext)
  700.           const char *fname, *fpath;
  701.       char *const *fext;
  702.   {
  703. !       /* simply calls buffindfile */
  704.         static char try[PATH_MAX];
  705. !       return buffindfile(fname,fpath,fext,try);
  706. ! }
  707. ! char *
  708. ! buffindfile(fname, fpath, fext, try)
  709. !       const char *fname, *fpath;
  710. !       char *const *fext, *try;
  711. ! {
  712. !       char *s, *extplace, *const *nextext, c;
  713. !       const char *t;
  714. !       int  hasext = 0, haspath = 0;
  715. !     if (!fname || !*fname)
  716. !         return NULL;
  717. !       s = try; t = fname;
  718. ! /* copy the file in, checking to see if a path and/or extension are already
  719. !    given */
  720. !       while ( (c = *t++) != 0 )
  721. !       {
  722. !               if (c == DIRSEP1 || c == DIRSEP2)
  723. !               {
  724. !                       haspath = 1;
  725. !                       hasext = 0;
  726. !               }
  727. !               else if (c == '.')
  728. !                       hasext = 1;
  729. !               *s++ = c;
  730. !       }
  731. !       extplace = s;
  732. !       *s = 0;
  733. !       if (haspath || !fpath)
  734. !               fpath = "";
  735. !       if (hasext || !fext)
  736. !               fext = nullext;
  737. !       for(;;) {               /* loop on path elements */
  738. !               nextext = fext;
  739. !         if (!hasext) {
  740. !             extplace[0] = 0;
  741. !             extplace[1] = 0;
  742. !         }
  743. !         if (EXISTS(try))
  744. !             return try;
  745. !         extplace[0] = '.';
  746. !               while(*nextext) {       /* loop on extensions */
  747. !                       (void)strcpy(&extplace[1], *nextext++);
  748. !                       if (EXISTS(try))
  749. !                               return try;
  750. !               }
  751. !               if (!*fpath) break;  /* no more places to look */
  752. ! /* copy in next element of path list */
  753. !               s = try;
  754. !         /* an attempt to accomodate within reason TOS specs  -- mj */
  755. !         if (*(fpath + 1) == ':') {
  756. !             if ((*(fpath + 2) == DIRSEP1 ||
  757. !                  *(fpath + 2) == DIRSEP2)   &&
  758. !                 (*fpath != '.' && *fpath != ':')) {
  759. !                 *s++ = *fpath++;
  760. !                 *s++ = *fpath++;
  761. !                 *s++ = *fpath++;
  762. !             }
  763. !         }
  764. !               while ((c = *fpath) != 0 && c != PATHSEP1 && c != PATHSEP2) {
  765. !                       *s++ = c;
  766. !                       fpath++;
  767. !               }
  768. !               if (c)
  769. !                       fpath++;
  770. !               *s++ = DIRSEP1;
  771. !               t = fname;
  772. !               while ((*s++ = *t++) != 0)
  773. !                       ;
  774. !               extplace = --s ;        /* where the extension gets written */
  775. !       }
  776. !       return NULL;
  777.   }
  778. --- 1,13 ----
  779.   #include <compiler.h>
  780.   #include <limits.h>    /* needed for PATH_MAX */
  781.   #include <support.h>
  782.   
  783.   char *
  784.   findfile(fname, fpath, fext)
  785.           const char *fname, *fpath;
  786.       char *const *fext;
  787.   {
  788. !       /* simply calls _buffindfile */
  789.         static char try[PATH_MAX];
  790. !       return _buffindfile(fname,fpath,fext,try);
  791.   }
  792. ===================================================================
  793. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/fopen.c,v
  794. retrieving revision 1.21
  795. diff -c -r1.21 fopen.c
  796. *** 1.21    1993/10/26 23:52:31
  797. --- fopen.c    1994/01/20 16:33:10
  798. ***************
  799. *** 71,81 ****
  800.           return(NULL);        /* file open/create error */
  801.           }
  802.       if(isatty(h))
  803. !         f |= (_IODEV | _IOLBF);
  804.       else
  805.           f |= _IOFBF;
  806.       fp->_file = h;            /* file handle */
  807.       fp->_flag = f;            /* file status flags */
  808.   
  809.       return(fp);
  810.       }
  811. --- 71,83 ----
  812.           return(NULL);        /* file open/create error */
  813.           }
  814.       if(isatty(h))
  815. !         f |= __mint ? (_IODEV | _IONBF| _IOBIN) : (_IODEV | _IONBF);
  816.       else
  817.           f |= _IOFBF;
  818.       fp->_file = h;            /* file handle */
  819.       fp->_flag = f;            /* file status flags */
  820. +     if (iomode & O_APPEND)
  821. +         (void) fseek(fp, 0L, SEEK_END);
  822.   
  823.       return(fp);
  824.       }
  825. ===================================================================
  826. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/getpw.c,v
  827. retrieving revision 1.14
  828. diff -c -r1.14 getpw.c
  829. *** 1.14    1993/10/26 23:52:39
  830. --- getpw.c    1994/01/20 16:33:10
  831. ***************
  832. *** 382,392 ****
  833.       *cp++ = 0x00;
  834.       curentry.pw_dir = cp;
  835.       for (; ((*cp != 0x00) && (*cp != ':')); cp++)
  836. !       ;
  837.       *cp++ = 0x00;
  838.       curentry.pw_shell = cp;
  839.       for (; ((*cp != 0x00) && (*cp != ':') && (*cp != '\n')); cp++)
  840. !       ;
  841.       *cp = 0x00;
  842.       if (curentry.pw_age == NULL)
  843.         curentry.pw_age = cp; /* Don't return NULL, return a null string */
  844. --- 382,394 ----
  845.       *cp++ = 0x00;
  846.       curentry.pw_dir = cp;
  847.       for (; ((*cp != 0x00) && (*cp != ':')); cp++)
  848. !       if (*cp == '\\')
  849. !     *cp = '/';
  850.       *cp++ = 0x00;
  851.       curentry.pw_shell = cp;
  852.       for (; ((*cp != 0x00) && (*cp != ':') && (*cp != '\n')); cp++)
  853. !       if (*cp == '\\')
  854. !     *cp = '/';
  855.       *cp = 0x00;
  856.       if (curentry.pw_age == NULL)
  857.         curentry.pw_age = cp; /* Don't return NULL, return a null string */
  858. ===================================================================
  859. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/lib.h,v
  860. retrieving revision 1.11
  861. diff -c -r1.11 lib.h
  862. *** 1.11    1993/10/26 23:52:40
  863. --- lib.h    1994/01/20 16:33:11
  864. ***************
  865. *** 61,67 ****
  866.   __EXTERN void    _setstack    __PROTO((char *));
  867.   __EXTERN void    _crtinit    __PROTO((void));
  868.   __EXTERN void    _acc_main    __PROTO((void));
  869. ! __EXTERN __EXITING    __exit    __PROTO((long status));
  870.   
  871.   __EXTERN void    _fclose_all_files __PROTO((void));
  872.   /* from the TOS GCC library */
  873. --- 61,67 ----
  874.   __EXTERN void    _setstack    __PROTO((char *));
  875.   __EXTERN void    _crtinit    __PROTO((void));
  876.   __EXTERN void    _acc_main    __PROTO((void));
  877. ! __EXTERN __EXITING    __exit    __PROTO((long status)) __NORETURN;
  878.   
  879.   __EXTERN void    _fclose_all_files __PROTO((void));
  880.   /* from the TOS GCC library */
  881. ===================================================================
  882. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/libgcc2.c,v
  883. retrieving revision 1.1
  884. diff -c -r1.1 libgcc2.c
  885. *** 1.1    1993/05/21 12:58:15
  886. --- libgcc2.c    1994/01/20 16:57:41
  887. ***************
  888. *** 36,41 ****
  889. --- 36,46 ----
  890.   #include "gstddef.h"
  891.   #endif
  892.   
  893. + /* Don't use `fancy_abort' here even if config.h says to use it.  */
  894. + #ifdef abort
  895. + #undef abort
  896. + #endif
  897.   #else
  898.   
  899.   /* For the atari, include the relevant parts of config/m68k.h directly. */
  900. ***************
  901. *** 55,63 ****
  902.   #include <stddef.h>
  903.   #endif
  904.   
  905. ! /* Define this if most significant byte of a word is the lowest numbered.  */
  906. ! /* That is true on the 68000.  */
  907. ! #define BYTES_BIG_ENDIAN 1
  908.   
  909.   /* Define this if most significant word of a multiword number is the lowest
  910.      numbered.  */
  911. --- 60,77 ----
  912.   #include <stddef.h>
  913.   #endif
  914.   
  915. ! #if 0
  916. ! /* Define for XFmode extended real floating point support.  */
  917. ! #define LONG_DOUBLE_TYPE_SIZE 96
  918. ! #else
  919. ! /* Don't try using XFmode.  */
  920. ! #define LONG_DOUBLE_TYPE_SIZE 64
  921. ! #endif
  922. ! /* Define this if most significant bit is lowest numbered
  923. !    in instructions that operate on numbered bit-fields.
  924. !    This is true for 68020 insns such as bfins and bfexts.  */
  925. ! #define BITS_BIG_ENDIAN 1
  926.   
  927.   /* Define this if most significant word of a multiword number is the lowest
  928.      numbered.  */
  929. ***************
  930. *** 69,76 ****
  931.   /* number of bits in an addressable storage unit */
  932.   #define BITS_PER_UNIT 8
  933.   
  934. ! /* for this file this is always true, never compile anything in here with
  935. !    -mshort */
  936.   #define BITS_PER_WORD 32
  937.   
  938.   /* This is the library routine that is used
  939. --- 83,92 ----
  940.   /* number of bits in an addressable storage unit */
  941.   #define BITS_PER_UNIT 8
  942.   
  943. ! /* Width in bits of a "word", which is the contents of a machine register.
  944. !    Note that this is not necessarily the width of data type `int';
  945. !    if using 16-bit ints on a 68000, this would still be 32.
  946. !    But on a machine with 16-bit registers, this would be 16.  */
  947.   #define BITS_PER_WORD 32
  948.   
  949.   /* This is the library routine that is used
  950. ***************
  951. *** 172,177 ****
  952. --- 188,199 ----
  953.   
  954.   extern DItype __fixunssfdi (SFtype a);
  955.   extern DItype __fixunsdfdi (DFtype a);
  956. + #if LONG_DOUBLE_TYPE_SIZE == 96
  957. + extern DItype __fixunsxfdi (XFtype a);
  958. + #endif
  959. + #if LONG_DOUBLE_TYPE_SIZE == 128
  960. + extern DItype __fixunstfdi (TFtype a);
  961. + #endif
  962.   
  963.   #if defined (L_negdi2) || defined (L_divdi3) || defined (L_moddi3)
  964.   #if defined (L_divdi3) || defined (L_moddi3)
  965. ***************
  966. *** 697,702 ****
  967. --- 719,725 ----
  968.   
  969.   #ifdef L_divdi3
  970.   UDItype __udivmoddi4 ();
  971.   DItype
  972.   __divdi3 (u, v)
  973.        DItype u, v;
  974. ***************
  975. *** 1094,1100 ****
  976.   #endif
  977.   
  978.   #if defined(L_fixunsxfsi) && LONG_DOUBLE_TYPE_SIZE == 96
  979. ! #include "glimits.h"
  980.   
  981.   USItype
  982.   __fixunsxfsi (a)
  983. --- 1117,1123 ----
  984.   #endif
  985.   
  986.   #if defined(L_fixunsxfsi) && LONG_DOUBLE_TYPE_SIZE == 96
  987. ! #include <limits.h>
  988.   
  989.   USItype
  990.   __fixunsxfsi (a)
  991. ***************
  992. *** 1150,1162 ****
  993.   
  994.   /* frills for C++ */
  995.   
  996. ! #ifdef L_builtin_new
  997.   #include <memory.h>
  998.   
  999.   typedef void (*vfp)(void);
  1000.   
  1001.   extern vfp __new_handler;
  1002.   
  1003.   void *
  1004.   __builtin_new (size_t sz)
  1005.   {
  1006. --- 1173,1186 ----
  1007.   
  1008.   /* frills for C++ */
  1009.   
  1010. ! #ifdef L_op_new
  1011.   #include <memory.h>
  1012.   
  1013.   typedef void (*vfp)(void);
  1014.   
  1015.   extern vfp __new_handler;
  1016.   
  1017. + /* void * operator new (size_t sz) */
  1018.   void *
  1019.   __builtin_new (size_t sz)
  1020.   {
  1021. ***************
  1022. *** 1170,1178 ****
  1023.       (*__new_handler) ();
  1024.     return p;
  1025.   }
  1026. ! #endif
  1027.   
  1028. ! #ifdef L_caps_New
  1029.   
  1030.     /* Avoid forcing the library's meaning of `write' on the user program
  1031.        by using the "internal" name (for use within the library)  */
  1032. --- 1194,1202 ----
  1033.       (*__new_handler) ();
  1034.     return p;
  1035.   }
  1036. ! #endif /* L_op_new */
  1037.   
  1038. ! #ifdef L_new_handler
  1039.   
  1040.     /* Avoid forcing the library's meaning of `write' on the user program
  1041.        by using the "internal" name (for use within the library)  */
  1042. ***************
  1043. *** 1185,1215 ****
  1044.   
  1045.   vfp __new_handler = default_new_handler;
  1046.   
  1047. - void *
  1048. - __builtin_vec_new (p, maxindex, size, ctor)
  1049. -      void *p;
  1050. -      size_t maxindex;
  1051. -      size_t size;
  1052. -      void (*ctor)(void *);
  1053. - {
  1054. -   size_t i;
  1055. -   size_t nelts = maxindex + 1;
  1056. -   void *rval;
  1057. -   if (p == 0)
  1058. -     p = __builtin_new (nelts * size);
  1059. -   rval = p;
  1060. -   for (i = 0; i < nelts; i++)
  1061. -     {
  1062. -       (*ctor) (p);
  1063. -       p += size;
  1064. -     }
  1065. -   return rval;
  1066. - }
  1067.   vfp
  1068.   __set_new_handler (handler)
  1069.        vfp handler;
  1070. --- 1209,1214 ----
  1071. ***************
  1072. *** 1243,1283 ****
  1073.     _exit (-1);
  1074.   }
  1075.   #endif
  1076. - #ifdef L_builtin_del
  1077. - typedef void (*vfp)(void);
  1078.   
  1079.   void
  1080.   __builtin_delete (void *ptr)
  1081.   {
  1082.     if (ptr)
  1083.       free (ptr);
  1084.   }
  1085. - void
  1086. - __builtin_vec_delete (ptr, maxindex, size, dtor, auto_delete_vec, auto_delete)
  1087. -      void *ptr;
  1088. -      size_t maxindex;
  1089. -      size_t size;
  1090. -      void (*dtor)(void *, int);
  1091. -      int auto_delete;
  1092. - {
  1093. -   size_t i;
  1094. -   size_t nelts = maxindex + 1;
  1095. -   void *p = ptr;
  1096. -   ptr += nelts * size;
  1097. -   for (i = 0; i < nelts; i++)
  1098. -     {
  1099. -       ptr -= size;
  1100. -       (*dtor) (ptr, auto_delete);
  1101. -     }
  1102. -   if (auto_delete_vec)
  1103. -     __builtin_delete (p);
  1104. - }
  1105.   #endif
  1106.   
  1107.   #ifdef L_trampoline
  1108. --- 1242,1256 ----
  1109.     _exit (-1);
  1110.   }
  1111.   #endif
  1112.   
  1113. + #ifdef L_op_delete
  1114. + /* void operator delete (void *ptr) */
  1115.   void
  1116.   __builtin_delete (void *ptr)
  1117.   {
  1118.     if (ptr)
  1119.       free (ptr);
  1120.   }
  1121.   #endif
  1122.   
  1123.   #ifdef L_trampoline
  1124. ===================================================================
  1125. RCS file: /net/acae127/home/bammi/etc/src/master/atari/co/longlong.h,v
  1126. retrieving revision 1.1
  1127. diff -c -r1.1 longlong.h
  1128. *** 1.1    1993/05/21 12:58:16
  1129. --- longlong.h    1994/01/20 16:33:12
  1130. ***************
  1131. *** 411,443 ****
  1132.          : "=d" ((USItype)(count))                    \
  1133.          : "od" ((USItype)(x)), "n" (0))
  1134.   #else /* not mc68020 */
  1135.   #define umul_ppmm(xh, xl, a, b) \
  1136.     __asm__ ("| Inlined umul_ppmm
  1137. !     movel    %2,d0
  1138. !     movel    %3,d1
  1139. !     movel    d0,d2
  1140. !     swap    d0
  1141. !     movel    d1,d3
  1142. !     swap    d1
  1143. !     movew    d2,d4
  1144. !     mulu    d3,d4
  1145. !     mulu    d1,d2
  1146. !     mulu    d0,d3
  1147. !     mulu    d0,d1
  1148. !     movel    d4,d0
  1149. !     eorw    d0,d0
  1150. !     swap    d0
  1151. !     addl    d0,d2
  1152. !     addl    d3,d2
  1153.       jcc    1f
  1154. !     addl    #65536,d1
  1155. ! 1:    swap    d2
  1156. !     moveq    #0,d0
  1157. !     movew    d2,d0
  1158. !     movew    d4,d2
  1159. !     movel    d2,%1
  1160. !     addl    d1,d0
  1161. !     movel    d0,%0"                            \
  1162.          : "=g" ((USItype)(xh)),                    \
  1163.            "=g" ((USItype)(xl))                    \
  1164.          : "g" ((USItype)(a)),                    \
  1165. --- 411,444 ----
  1166.          : "=d" ((USItype)(count))                    \
  1167.          : "od" ((USItype)(x)), "n" (0))
  1168.   #else /* not mc68020 */
  1169. + /* %/ inserts REGISTER_PREFIX.  */
  1170.   #define umul_ppmm(xh, xl, a, b) \
  1171.     __asm__ ("| Inlined umul_ppmm
  1172. !     movel    %2,%/d0
  1173. !     movel    %3,%/d1
  1174. !     movel    %/d0,%/d2
  1175. !     swap    %/d0
  1176. !     movel    %/d1,%/d3
  1177. !     swap    %/d1
  1178. !     movew    %/d2,%/d4
  1179. !     mulu    %/d3,%/d4
  1180. !     mulu    %/d1,%/d2
  1181. !     mulu    %/d0,%/d3
  1182. !     mulu    %/d0,%/d1
  1183. !     movel    %/d4,%/d0
  1184. !     eorw    %/d0,%/d0
  1185. !     swap    %/d0
  1186. !     addl    %/d0,%/d2
  1187. !     addl    %/d3,%/d2
  1188.       jcc    1f
  1189. !     addl    #65536,%/d1
  1190. ! 1:    swap    %/d2
  1191. !     moveq    #0,%/d0
  1192. !     movew    %/d2,%/d0
  1193. !     movew    %/d4,%/d2
  1194. !     movel    %/d2,%1
  1195. !     addl    %/d1,%/d0
  1196. !     movel    %/d0,%0"                        \
  1197.          : "=g" ((USItype)(xh)),                    \
  1198.            "=g" ((USItype)(xl))                    \
  1199.          : "g" ((USItype)(a)),                    \
  1200.